import createAxiosClient from "@/app/utils/axiosRequest";
import cookie from "react-cookies";
import {Token} from "@/app/constants/authTokenConstants";
import ToastUtil from "@/app/utils/toastUtil";

/**
 * 修改个人信息
 * @param nickname 昵称
 * @param avatarFile 头像文件 (不再使用，保留参数兼容)
 * @param email 邮箱
 * @param oldPassword 旧密码
 * @param newPassword 新密码
 * @param avatarUrl 已上传的头像URL
 * @param username 用户名
 * @constructor
 */
export default async function ModifyInfo(
    nickname?: string, 
    avatarFile?: File,  // 保留参数兼容，但不再使用
    email?: string, 
    oldPassword?: string, 
    newPassword?: string,
    avatarUrl?: string,   // 已上传的头像URL
    username?: string     // 用户名
): Promise<boolean> {
    
    // 构建请求数据
    const updateData: any = {};
    
    if (nickname) {
        updateData.nickname = nickname;
    }
    
    if (email) {
        updateData.email = email;
    }
    
    if (avatarUrl) {
        updateData.avatar = avatarUrl;
    }
    
    if (oldPassword && newPassword) {
        updateData.oldPassword = oldPassword;
        updateData.newPassword = newPassword;
    }
    
    if (username) {
        updateData.username = username;
    }
    
    // 如果没有需要更新的数据，直接返回成功
    if (Object.keys(updateData).length === 0) {
        return true;
    }
    
    // 使用统一的axios实例
    const axiosInstance = createAxiosClient();
    
    // 发送更新请求
    return axiosInstance.put(
        `/app/user/update`,
        updateData
    )
    .then(response => {
        const data = response.data;
        if (data.status) {
            ToastUtil(data.message || "信息更新成功", '👌', "success");
            return true;
        }
        ToastUtil(data.message || "信息更新失败", '❌', "error");
        return false;
    })
    .catch(error => {
        ToastUtil("更新失败", '❌', "error");
        return false;
    });
}